home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / ums / IntuiNews1_4a.lha / UMS / Rexx / MausMitglied.intui < prev    next >
Text File  |  1996-03-29  |  8KB  |  265 lines

  1. /****** MausMitglied.intui ************************************************************
  2.  
  3.     NAME
  4.       $VER: MausMitglied.intui 1.6 (29.3.96) by Olaf Peters
  5.  
  6.           *** This script is only useful in the german MausNet (R) ***
  7.  
  8.     AUTHOR
  9.       Olaf Peters
  10.       Kulmer Str. 7
  11.       28237 Bremen
  12.  
  13.       op@hb2.maus.de / olf@informatik.uni-bremen.de
  14.  
  15.     SYNOPSIS
  16.       Unterstützt die Mitglieder-/Chefverwaltung in Mausgruppen.
  17.  
  18.     FUNCTION
  19.       Dieses Script ermöglicht es aus IntuiNews' Nachrichtenfenster heraus
  20.       ein Mitglied in einer Mausgruppe einzutragen bzw. auszutragen oder
  21.       auch als Chef zu setzen (Vorausgesetzt man ist Sysop in der Maus).
  22.  
  23.       Das Script ist dabei so flexibel, daß es die nötigen Angaben
  24.       weitestgehend automatisch erkennt. Das neue Mitglied (bzw. der neue
  25.       Chef) muß dabei immer der Absender der gerade im Nachrichtenfenster
  26.       angezeigten Mitteilung sein, dabei spielt es keine Rolle, ob es sich
  27.       um eine PM oder um eine Nachricht in einer Gruppe handelt. Bei
  28.       Gruppenmitteilungen fragt das Script, ob es für den Absender auch um
  29.       jene Gruppe handelt (wichtig bei Austragen/Chef setzen) und erlaubt
  30.       ggf. eine Änderung der Gruppe.
  31.  
  32.       Das Script fragt - nach eventueller Vervollständigung der Angaben -
  33.       welche Aktion ausgeführt werden soll (Eintragen, Austragen, Chef
  34.       setzen) und schreibt danach die Mauscontrol-Mitteilung an den
  35.       Exporter aus dessen Maus das neue Mitglied schreibt. Z.B. schreibt
  36.       "Heike Musterfrau, hb2.maus", daß sie gerne in BIETE aufgenommen
  37.       werden möchte. Das Script schickt die Mauscontrol-Nachricht dann
  38.       (entsprechende Bestätigung vorausgesetzt) an "maus.hb2, hb2.maus".
  39.  
  40.     CONFIGURATION
  41.       Im ersten Teil dieses Script kann der Mailfolder eingestellt werden,
  42.       in dem die ///mauscontrol-Nachricht abgelegt werden soll.
  43.  
  44.     NEEDS
  45.       Für die Benutzung des Scripts muß folgendes installiert sein:
  46.  
  47.       · mindestens IntuiNews v1.3b (wegen des ARexx-Ports)
  48.       · mindestens UMSServer v11.20+ (wegen des UMSDupAccount Tricks für
  49.         normale Logins)
  50.       · reqtools.library und reqrexxtools.library (für die Requester)
  51.  
  52.     BUGS
  53.       Keine bekannt. Sollten welche auftauchen, bitte mailen (s.o.)
  54.  
  55.     $HISTORY:
  56.  
  57.      29.3.96  1.6   : · Controlmail wird in das Artikelfenster eingetragen
  58.      10.9.95  1.5   : · Controlmail wird optional in einem Folder abgelegt
  59.                       · die Controlmail wird nicht mehr in die Maus
  60.                         geschickt, sondern tatsächlich nur an den lokalen
  61.                         UMS-Exporter.
  62.      27.6.95  1.4   : INFO SCREEN statt GetPubScreenName -> IN 1.3b9
  63.      27.3.95  1.3   : PubScreenname wird jetzt von IntuiNews geholt (beta 6)
  64.      25.3.95  1.2   : · Anpassung an IntuiNews v1.3b5
  65.                       · Bug beseitigt, der die ///mauscontrol im Infile
  66.                         verhunzte: ein LF hinter dem 'G'-Kommando hat's
  67.                         gebracht.
  68.                       · es wird überprüft, ob es den Alias 'maus.xy' gibt.
  69.                         Damit sollten Unfugmails eingeschränkt werden?
  70.      16.3.95  1.1   : Mitglied eintragen funktionierte irgendwie nicht?!
  71.      14.3.95  1.0   : initial
  72.  
  73. ******************************************************************************
  74. *
  75. */
  76.  
  77. /*
  78.  * ------------------------------------------------------------------------
  79.  *
  80.  *  Hier den Folder eintragen, in den die ///mauscontrol-Nachricht abgelegt
  81.  *  werden soll.
  82.  *
  83.  *  z.B.
  84.  *
  85.  * ctrlFolder = "Maus.Control"
  86.  *
  87.  */
  88.  
  89. ctrlFolder = ""
  90.  
  91. /* ------------------------------------------------------------------------ */
  92.  
  93.  
  94.  
  95. ProgramName = "MausMitglied.rexx"
  96. lf = '0a'x
  97.  
  98. eztags = "rtez_flags=ezreqf_centertext"
  99. rstags = "rtgs_flags=gsreqf_centertext"
  100.  
  101. /*** Startup ***/
  102.  
  103. options results
  104.  
  105. RC = 0
  106. account = 0
  107.  
  108. signal on BREAK_C
  109. signal on BREAK_D
  110. signal on BREAK_E
  111. signal on BREAK_F
  112. signal on ERROR
  113. signal on HALT
  114. signal on IOERR
  115. signal on SYNTAX
  116.  
  117. /*/// "Libs einbinden" */
  118.  
  119. if ~show(l, "rexxreqtools.library") then
  120.   if ~addlib("rexxreqtools.library", 0, -30, 0) then do
  121.     say "rexxreqtools.library konnte nicht geöffnet werden!" ;
  122.     exit(20) ;
  123.   end
  124.  
  125. libname = "ums.library"
  126. if ~show("L", "ums.library") then do
  127.   if ~addlib("ums.library", 0, -210, 8) then do
  128.     say "ums.library not found!"
  129.     exit(20)
  130.   end
  131. end
  132. call UMSInitConsts
  133.  
  134. /*\\\*/
  135.  
  136. /*/// "Login duplizieren" */
  137.  
  138. 'info screen'
  139. screen = result
  140.  
  141. eztags = eztags "rt_pubscrname='" || screen || "'"
  142. rstags = rstags "rt_pubscrname='" || screen || "'"
  143.  
  144. 'status'
  145.  
  146. if result ~= "MESSAGE" then do
  147.     rtezrequest("Du mußt im Nachrichtenfenster sein,"|| lf || "um dieses Script auszuführen!", "_Abbruch", ProgramName, eztags)
  148.     call HALT
  149. end
  150.  
  151. 'getaccount'
  152.  
  153. if (result = "RESULT") | (result = 0) then do
  154.     rtezrequest("Script konnte keinen Account bekommen!", "_Abbruch", ProgramName, eztags)
  155.     call HALT
  156. end ; else
  157.     login = result
  158.  
  159. account = UMSLogin("", login, "")
  160. if account = 0 then do
  161.     rtezrequest("Konnte Account nicht duplizieren!", "_Abbruch", ProgramName, eztags)
  162.     call HALT
  163. end
  164.  
  165. /*\\\*/
  166.  
  167. 'getmsgnum'
  168.  
  169. if result = "RESULT" then do
  170.     rtezrequest("No message no fun! :-)", "_Abbruch", ProgramName, eztags)
  171.     call HALT
  172. end ; else
  173.     msgnum = result
  174.  
  175. drop msg.
  176. if ~UMSReadMsgHeader(account, msgnum, msg., true) then do
  177.     rtezrequest("Nachricht konnte nicht gelesen werden!", "_Abbruch", ProgramName, eztags)
  178.     call HALT
  179. end
  180.  
  181. if upper(right(msg.UMSCODE_FromAddr, 5)) ~= ".MAUS" then do
  182.     rtezrequest(msg.UMSCODE_FromName "hat keine Mausadresse.", "_Abbruch", ProgramName, eztags)
  183.     call HALT
  184. end
  185.  
  186. parse var msg.UMSCODE_FromAddr maus ".maus"
  187. if UMSReadConfigUserName(account, "maus." || maus) = "" then do
  188.     rtezrequest("Für die Maus" maus "gibt's hier keinen Exporter!", "_Abbruch", ProgramName, eztags)
  189.     call HALT
  190. end
  191.  
  192. if msg.UMSCODE_Group = "MSG." || UMSCODE_Group then do
  193.     parse var msg.UMSCODE_ToName Chef Gruppe .
  194.     reqgrp =  (upper(Chef) ~= "CHEF")
  195. end ; else do
  196.     parse var msg.UMSCODE_Group "maus." . "." gruppe
  197.     if gruppe = "" then do
  198.         reqgrp = true
  199.     end ; else
  200.         reqgrp = (rtezrequest("Nachricht in Gruppe" gruppe || "." || lf || "Geht's auch um diese Gruppe?", "_Ja|_Nein", ProgramName, eztags) = 0)
  201. end
  202.  
  203. if reqgrp then do
  204.     gruppe = rtgetstring("", "User:" msg.UMSCODE_FromName || lf || lf || "Um welche Gruppe geht's?", ProgramName, "_Okay|_Abbruch", rstags, rtres)
  205.     if rtres = 0 then
  206.         call HALT
  207. end
  208.  
  209. wahl = rtezrequest("Gruppe:" gruppe || lf || lf || "Was soll mit" msg.UMSCODE_FromName "passieren?", "_Eintragen|A_ustragen|Als _Chef|_Abbruch", ProgramName, eztags)
  210.  
  211. select
  212.     when wahl = 1 then
  213.         op = ">"
  214.     when wahl = 2 then
  215.         op = "<"
  216.     when wahl = 3 then
  217.         op = "="
  218.     otherwise
  219.         call HALT
  220. end
  221.  
  222. drop ctrl.
  223. ctrl.UMSCODE_ToName = "maus." || maus
  224. ctrl.UMSCODE_Subject = "///mauscontrol"
  225. ctrl.UMSCODE_MsgText = "GU" || msg.UMSCODE_FromName || op || gruppe || lf
  226. ctrl.UMSCODE_Folder  = ctrlFolder
  227.  
  228. msgnum = UMSWriteMsg(account, ctrl.)
  229. if msgnum = 0 then do
  230.     rtezrequest("Mauscontrol-Nachricht konnte nicht geschrieben werden:" || lf || "UMS Error #" || UMSErrNum(account) || ":" UMSErrTxt(account), "_Abbruch", ProgramName, eztags)
  231. end ; else
  232.     'addmsg' msgnum
  233.  
  234. /*/// "Final cleanup" */
  235.  
  236. BREAK_C:
  237. BREAK_D:
  238. BREAK_E:
  239. BREAK_F:
  240. ERROR:
  241. HALT:
  242. IOERR:
  243. SYNTAX:
  244.  
  245. /*** Logout ***/
  246.  
  247. if account ~= 0 then do
  248.   call UMSLogout(account)
  249.   account = 0
  250. end
  251.  
  252. exit 0
  253.  
  254. /*** Support ***/
  255.  
  256. CheckErr: procedure expose account
  257.   err = UMSErrNum(account)
  258.   if err ~= 0 then do
  259.     rtezrequest("UMS Error #" || err || ": " || UMSErrTxt(account))
  260.   end
  261. return
  262.  
  263. /*\\\*/
  264.  
  265.